#ifndef _IPHLPAPI_
#define _IPHLPAPI_


#define MAX_HOSTNAME_LEN		128
#define MAX_DOMAIN_NAME_LEN		128
#define MAX_SCOPE_ID_LEN		256
#define MAX_ADAPTER_NAME_LENGTH	256   
#define MAX_ADAPTER_DESCRIPTION_LENGTH	128
#define MAX_ADAPTER_ADDRESS_LENGTH	8
#define ULONGLONG	unsigned __int64

typedef struct _IP_ADDRESS_STRING {   
	char		String[16];   
} IP_ADDRESS_STRING;   
    
typedef struct _IP_MASK_STRING {   
	char		String[16];   
} IP_MASK_STRING;   
    
typedef struct _IP_ADDR_STRING {   
	struct _IP_ADDR_STRING*	Next;   
	IP_ADDRESS_STRING	IpAddress;   
	IP_MASK_STRING	IpMask;   
	DWORD		Context;   
} IP_ADDR_STRING, *PIP_ADDR_STRING;   
   

typedef struct fixed_info{
	char HostName		[MAX_HOSTNAME_LEN + 4];
	char DomainName	[MAX_DOMAIN_NAME_LEN + 4];
	PIP_ADDR_STRING	CurrentDnsServer;
	IP_ADDR_STRING		DnsServerList; 
	UINT				NodeType;
	char				ScopeId [MAX_SCOPE_ID_LEN + 4];
	UINT				EnableRouting;
	UINT				EnableProxy;
	UINT				EnableDns;
} FIXED_INFO, *PFIXED_INFO;

typedef struct _OSVERSIONINFOEX {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  TCHAR szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;

#endif